package com.hackordie.commons.hardware.computer;

import java.util.List;

import com.hackordie.commons.hardware.components.AComponent;
import com.hackordie.commons.software.AProgram;
import com.hackordie.commons.software.OperativeSistem.AOperativeSistem;
import com.hackordie.constants.EComponentsType;

public interface IComputer {

    // getters
    public List<AComponent> getComponentsList();
    public AComponent getComponentByName(String name);
    public List<AComponent> getComponentByType(EComponentsType type);
    public int getAvailableEnergy();
    
    //functions
    public boolean addComponent(AComponent component);
    public void removeComponentByName(String name);
    public void removeComponentsByType(EComponentsType type);    
    public void removeAllComponents();
    public void on();    
    public void off();
    public String getMyIp();
    public AOperativeSistem getOperativeSystem();
    public void setOperativeSystem(AOperativeSistem operativeSystem);
    public boolean executeProgram(Object[] obj);
    public void stopProgram(AProgram program);
    public int getAvailableProcessorCapacity();
    
}
